Skip to content

Allow context-binary lowering to use edge dialect ops (#20518)#20518

Merged
meta-codesync[bot] merged 1 commit into
pytorch:mainfrom
JakeStevens:export-D109598309
Jul 17, 2026
Merged

Allow context-binary lowering to use edge dialect ops (#20518)#20518
meta-codesync[bot] merged 1 commit into
pytorch:mainfrom
JakeStevens:export-D109598309

Conversation

@JakeStevens

@JakeStevens JakeStevens commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

Summary:

Unblocks the QNN context-binary path from lowering through to_edge with _use_edge_ops=True (the default). Previously it was pinned to EdgeCompileConfig(_use_edge_ops=False) purely to keep the qaisw context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309

@pytorch-bot

pytorch-bot Bot commented Jun 25, 2026

Copy link
Copy Markdown

🔗 Helpful Links

🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/20518

Note: Links to docs will display an error until the docs builds have been completed.

❗ 1 Active SEVs

There are 1 currently active SEVs. If your PR is affected, please view them below:

✅ No Failures

As of commit efc6e3c with merge base 47fd0d8 (image):
💚 Looks good so far! There are no failures yet. 💚

This comment was automatically generated by Dr. CI and updates every 15 minutes.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jun 25, 2026
@meta-codesync

meta-codesync Bot commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

@JakeStevens has exported this pull request. If you are a Meta employee, you can view the originating Diff in D109598309.

@github-actions

Copy link
Copy Markdown

This PR needs a release notes: label

If your change should be included in the release notes (i.e. would users of this library care about this change?), please use a label starting with release notes:. This helps us keep track and include your important work in the next release notes.

To add a label, you can comment to pytorchbot, for example
@pytorchbot label "release notes: none"

For more information, see
https://github.com/pytorch/pytorch/wiki/PyTorch-AutoLabel-Bot#why-categorize-for-release-notes-and-how-does-it-work.

@meta-codesync meta-codesync Bot changed the title Allow context-binary lowering to use edge dialect ops Allow context-binary lowering to use edge dialect ops (#20518) Jun 25, 2026
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jun 25, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
@JakeStevens JakeStevens added the module: qnn Issues related to Qualcomm's QNN delegate and code under backends/qualcomm/ label Jun 25, 2026
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jun 25, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 6, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 7, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 7, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 7, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

Loader detection now goes through a single `is_context_loader_target()` helper that matches the op namespace (so it works on the edge-dialect wrapper), replacing the three name-dependent checks (`eval`, raw `.namespace`, substring).

Differential Revision: D109598309
Comment thread backends/qualcomm/builders/qnn_constants.py Outdated
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 14, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
@JakeStevens
JakeStevens force-pushed the export-D109598309 branch 2 times, most recently from 8b08c87 to b249858 Compare July 14, 2026 20:59
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 14, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 14, 2026
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
@JakeStevens

Copy link
Copy Markdown
Contributor Author

Addressed claude review

JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 14, 2026
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
@JakeStevens

Copy link
Copy Markdown
Contributor Author

@harshs-qti @shewu-quic are there any specific concerns you have or additional tests I can run?

@harshs-qti harshs-qti left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

approved

JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
@JakeStevens
JakeStevens force-pushed the export-D109598309 branch 2 times, most recently from 22a970b to 939b640 Compare July 16, 2026 15:30
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 16, 2026
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
JakeStevens added a commit to JakeStevens/executorch that referenced this pull request Jul 17, 2026
Summary:

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
Summary:
Pull Request resolved: pytorch#20518

Unblocks the QNN context-binary path from lowering through `to_edge` with `_use_edge_ops=True` (the default). Previously it was pinned to `EdgeCompileConfig(_use_edge_ops=False)` purely to keep the `qaisw` context-loader custom op's original name, because loader detection was name-based.

We can simply unwrap the op overload and maintain the same check.

Reviewed By: rascani

Differential Revision: D109598309
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. meta-exported module: qnn Issues related to Qualcomm's QNN delegate and code under backends/qualcomm/

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants